home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 011 / templ200.arc / TEMPLATE.DOC < prev    next >
Encoding:
Text File  |  1986-01-13  |  46.0 KB  |  1,171 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.                      TEMPLATE (tm) Applications Integrator
  17.                                  Version 2.00
  18.               Copyright (c) 1985 Atkinson, Campbell Developement
  19.                                   User Guide
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.                                        
  62.  
  63.  
  64.  
  65.  
  66.  
  67.                                                                   TEMPLATE (TM)
  68.  
  69.  
  70.  
  71.                      TEMPLATE (tm) Applications Integrator
  72.                                  Version 2.00
  73.               Copyright (c) 1985 Atkinson, Campbell Developement
  74.                                Table of Contents
  75.  
  76.        1.0 Description of TEMPLATE
  77.           1.0.1   What TEMPLATE Does
  78.               1.0.1.1 The Real Time Clock (TOD Block)
  79.               1.0.1.2 The MacroKeys (tm) Desktop Facility
  80.               1.0.1.3 Customizing with Configuration Files
  81.               1.0.1.4 Autoconfiguration for Turnkey Applications
  82.               1.0.1.5 The DosShell (tm) Applications Interface
  83.  
  84.        1.1 Installation of TEMPLATE
  85.           1.1.1 Distribution Files
  86.           1.1.2 Copying Execution Time Files to Another Disk
  87.           1.1.3 Hardware Requirements for TEMPLATE
  88.           1.1.4 Registration for User Supported Software
  89.  
  90.        1.2 Starting and Stopping TEMPLATE
  91.           1.2.1 TEMPLATE Command (Starting)
  92.           1.2.2 The F3 Key (Stopping)
  93.  
  94.        1.3 The TEMPLATE Master Menu Screen
  95.           1.3.1 The Guest Application Menu
  96.               1.3.1.1 Unconfigured Mode
  97.               1.3.1.2 Configured Mode
  98.               1.3.1.3 Selecting a Guest Application to Run
  99.           1.3.2 The TEMPLATE Control Functions Menu
  100.               1.3.2.1 F1 - Load a Configuration File
  101.               1.3.2.2 F2 - Load a MacroKey Definition File
  102.               1.3.2.3 F3 - QUIT TEMPLATE
  103.               1.3.2.4 F4 - TOD Block Control
  104.               1.3.2.5 F5 - Execute Any DOS Command
  105.               1.3.2.6 F6 - Delete Configuration Tables
  106.               1.3.2.7 F7 - Delete MacroKey Tables
  107.               1.3.2.8 F8 - HIDE TEMPLATE (Stay Resident)
  108.  
  109.        1.4 Using TEMPLATE Configuration Files
  110.           1.4.1 AUTOLOAD.COM and CONFIG.CFG Files
  111.           1.4.2 LDTCFG.COM and Configuration Files
  112.           1.4.3 Structure of .CFG Files
  113.           1.4.3 Syntax of Configuration Statements
  114.  
  115.        1.5 Using the MacroKeys Facility
  116.           1.5.1 LDMKEY.COM Utility
  117.           1.5.2 Structure of .KEY Files
  118.           1.5.3 Syntax of MacroKey Redefinition Statements
  119.           1.5.4 Advanced Use of MacroKey Definitions
  120.  
  121.        1.6 Programming the DosShell Interface
  122.           1.6.1 Theory Behind the DosShell Interface
  123.           1.6.2 Programming Requirements
  124.               1.6.2.1 Screen Disposition During Execution
  125.               1.6.2.2 Invoking Interrupt 63H(ex)
  126.  
  127.                                        2
  128.  
  129.  
  130.  
  131.  
  132.                                                                   TEMPLATE (TM)
  133.  
  134.  
  135.  
  136.               1.6.2.3 RAM Requirements, System and User
  137.           1.6.3 Invoking From Assembler Routines
  138.           1.6.4 Invoking From Turbo Pascal
  139.           1.6.5 Invoking From BASIC/BASICA
  140.           1.6.6 Stacking Applications in RAM with the DosShell
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.                                        3
  193.  
  194.  
  195.  
  196.  
  197.                                                                   TEMPLATE (TM)
  198.  
  199.  
  200.  
  201.        1.0 Description of TEMPLATE
  202.  
  203.        1.0.1   What TEMPLATE Does
  204.  
  205.           TEMPLATE  is an applications integrator. Its basic function is
  206.        to  provide  single keystroke access to applications programs and
  207.        packages  of  your  choosing,  and  to  bring  them together as a
  208.        coherent,  integrated  package,  customized  the way you want it.
  209.  
  210.           TEMPLATE  also  provides  a  number  of other related services
  211.        described below.
  212.  
  213.        1.0.1.1
  214.         The Real Time Clock (TOD Block)
  215.  
  216.           As  a convenience, TEMPLATE provides a real time clock showing
  217.        hours,  minutes,  and  seconds. It is also referred to as the TOD
  218.        block.  The  TOD  block  may  be  turned on or off, and it may be
  219.        positioned  anywhere  on  the screen. Its default position is the
  220.        top right corner of the screen.
  221.  
  222.        1.0.1.2 The MacroKeys (tm) Desktop Facility
  223.  
  224.           The  MacroKeys  Desktop  Facility  is  a RAM resident keyboard
  225.        redefinition  facility,  with  which  you  can  assign  a  single
  226.        keystroke  to  mean  (and  to  input)  anything you wish; it is a
  227.        keyboard  macro  facility.  There  is  no  limit to the number or
  228.        identity  of the keys which may be redefined, as long as the 4096
  229.        byte  translation  table  does  not overflow. A single key may be
  230.        redefined  as  a  string  of  characters  up  to  255 bytes long.
  231.        MacroKeys  runs  transparent  to guest applications, operating by
  232.        intercepting  requests  for keyboard input at the ROM BIOS level.
  233.        With  the  HIDE function described below, TEMPLATE as a whole can
  234.        be made invisible.
  235.  
  236.        1.0.1.3 Customizing with Configuration Files
  237.  
  238.           TEMPLATE    menus    can    be  customized  with  the  use  of
  239.        configuration  files. You can specify the label that is to appear
  240.        on  the  menu,  what program is to execute when that menu item is
  241.        chosen,  and  optionally  any  necessary  command parameters (the
  242.        command tail, in CP/M terms).
  243.  
  244.        1.0.1.4 Autoconfiguration for Turnkey Applications
  245.  
  246.           You  can  optionally  create  AUTOLOAD configuration files and
  247.        store  them  on  the disk with TEMPLATE. When TEMPLATE starts, it
  248.        runs  AUTOLOAD  as  part of its set up procedure. If the AUTOLOAD
  249.        configuration  file exists, it is loaded, saving the operator the
  250.        effort,    and    creating    a   customized  turnkey  operation.
  251.  
  252.               1.0.1.5 The DosShell (tm) Applications Interface
  253.  
  254.           TEMPLATE  not only supports the execution of DOS commands from
  255.        its  master  menu,  it  also allows guest programs to access this
  256.  
  257.                                        4
  258.  
  259.  
  260.  
  261.  
  262.                                                                   TEMPLATE (TM)
  263.  
  264.  
  265.  
  266.        interface  code.  This  is the DosShell -- any program, including
  267.        BASIC  programs, can now support a DOS command interface feature,
  268.        with almost no coding overhead.
  269.  
  270.        1.1 Installation of TEMPLATE
  271.  
  272.        1.1.1 Distribution Files
  273.  
  274.           There  are  4  files  that you must have to run: TEMPLATE.EXE,
  275.        LDMKEY.COM,  LDTCFG.COM, and AUTOLOAD.COM. These are the TEMPLATE
  276.        program   itself,  the  MacroKeys  loader  service  utility,  the
  277.        configuration  loader service utility, and the automatic start-up
  278.        configuration  loader service utility. Additionally, a file named
  279.        CONFIG.CFG  is  distributed  with  TEMPLATE.  This  is  a  sample
  280.        configuration  file  that  can be used to auto-configure TEMPLATE
  281.        at start up time.
  282.  
  283.           If  you  are  receiving  TEMPLATE as a separate product, there
  284.        will  also be a file named TEMPLATE.DOC on the same diskette with
  285.        it -- this manual!
  286.  
  287.        1.1.2 Copying Execution Time Files to Another Disk
  288.  
  289.           All  four  of the executable files (programs) should be copied
  290.        to  the  same  directory on the target disk. TEMPLATE invokes the
  291.        satellite  modules  internally,  and assumes that they are in the
  292.        current  directory, on the current disk (i.e. current at the time
  293.        of  actual  execution).  There should always be a copy of DOS and
  294.        COMMAND.COM    on   the  diskette  these  files  are  copied  to.
  295.  
  296.        1.1.3 Hardware Requirements for TEMPLATE
  297.  
  298.           TEMPLATE  runs  on  IBM  or  compatible  PC's  or XT's. It can
  299.        operate  under DOS releases 2.00 to 3.10. Although you can use it
  300.        to  load  and  run multiple programs ("stacked" execution), it is
  301.        in no way a multitasking tool.
  302.  
  303.           TEMPLATE  itself  requires less than 16K of RAM, including all
  304.        buffers  and  tables  used internally. The satellite programs and
  305.        utilities  require  RAM beyond this, and were compiled assuming a
  306.        256K  address  space  -- therefore TEMPLATE will not operate with
  307.        less than 256K of RAM.
  308.  
  309.           No    assumption    is   made  about  what  disk  or  diskette
  310.        configuration  might  be used. TEMPLATE can run from any standard
  311.        diskette or hard disk.
  312.  
  313.           COMPATIBILITY:  TEMPLATE  uses  the interrupt vector locations
  314.        assigned  for  user  programs,  at  locations  60H through 67H to
  315.        archive  original vectors and to supply new ones. Any application
  316.        that  does  not  use  these  vectors  can run under TEMPLATE. The
  317.        MacroKeys  facility  intercepts  BIOS requests for keyboard input
  318.        (BIOS  interrupt  16H)  rather  than fielding keyboard interrupts
  319.        per    se.   MacroKeys  support  mimics  original  BIOS  keyboard
  320.        functions  exactly,  in  addition  to its key translation duties.
  321.  
  322.                                        5
  323.  
  324.  
  325.  
  326.  
  327.                                                                   TEMPLATE (TM)
  328.  
  329.  
  330.  
  331.        Any  program  which  does  not  alter  this  vector can run under
  332.        TEMPLATE.
  333.  
  334.        1.1.4 Registration for User Supported Software
  335.  
  336.           There  is  no  registration  fee for TEMPLATE Version 2.00. It
  337.        does,  however,  remain  the  copyrighted  product  of  Atkinson,
  338.        Campbell  Developement.  You  may  copy  this  group of programs,
  339.        collectively  referred  to as TEMPLATE, for your own use. You may
  340.        also  give  away  copies to anyone you choose, as long as (1) you
  341.        include  ALL  files,  particularly the documentation, and (2) you
  342.        have  not  modified the copy you are distributing in any fashion,
  343.        and  (3)  you  have  NOT  received  any  payment  for  either the
  344.        product,  or for the act of duplicating it. Later, more advanced,
  345.        versions    of    TEMPLATE    may  be  distributed  requesting  a
  346.        registration fee.
  347.  
  348.           If  you  wish, you may register your name and address with ACD
  349.        (send  no  money).  If you do, we will give you advance notice of
  350.        other  packages  which will be user supported software registered
  351.        for  a fee. They will be offered to registered users at a reduced
  352.        rate  (which  will  be ridiculously low to begin with). Our later
  353.        products  will all be capable of being integrated under TEMPLATE,
  354.        and make use of its facilities.
  355.  
  356.           If  you want to register as a user of TEMPLATE, just send your
  357.        name and address to:
  358.  
  359.                         Atkinson, Campbell Developement
  360.                                1761 Cheswood Dr.
  361.                                Jackson, MS 39209
  362.  
  363.        1.2 Starting and Stopping TEMPLATE
  364.  
  365.        1.2.1 TEMPLATE Command (Starting)
  366.  
  367.           When  you  boot  your  system,  place  the diskette containing
  368.        TEMPLATE.EXE  and  AUTOLOAD.COM on the current drive. If you want
  369.        to  run in configured mode (explained below), the file CONFIG.CFG
  370.        should  also  be  present.  For  both  floppy and hard disks, you
  371.        should    ideally  make  the  directory  containing  these  files
  372.        current,    although    you  do  not  have  to  (it  is  strongly
  373.        recommended).
  374.  
  375.           To  start  TEMPLATE,  just type that command -- TEMPLATE -- at
  376.        the  system prompt, and strike Return. The screen will be cleared
  377.        and painted with the TEMPLATE master menu.
  378.  
  379.        1.2.2 The F3 Key (Stopping)
  380.  
  381.           The  very  first  thing  you will want to know about is how to
  382.        stop  the program. Any time you can see the TEMPLATE master menu,
  383.        just strike F3 and you are out.
  384.  
  385.        1.3 The TEMPLATE Master Menu Screen
  386.  
  387.                                        6
  388.  
  389.  
  390.  
  391.  
  392.                                                                   TEMPLATE (TM)
  393.  
  394.  
  395.  
  396.  
  397.           The  TEMPLATE  master  menu  screen is divided into two parts.
  398.        The  top  part,  surrounded  by  a  box, is the guest application
  399.        menu.  This  is where you can select the programs you want to run
  400.        with  a single keystroke. The bottom part is the TEMPLATE control
  401.        functions  menu.  This  menu  has  options  for  controlling  the
  402.        behavior of TEMPLATE itself.
  403.  
  404.        1.3.1 The Guest Application Menu
  405.  
  406.        1.3.1.1 Unconfigured Mode
  407.  
  408.           "Unconfigured  mode"  means that you have not yet tailored the
  409.        guest  applications  menu,  picking  the  programs  you  want  to
  410.        integrate,  and  providing  the  menu options with labels of your
  411.        choosing.
  412.  
  413.           Running  in unconfigured mode, each time TEMPLATE presents you
  414.        with   the  master  menu  screen,  it  will  fill  in  the  guest
  415.        applications  menu with the first dozen executable (.EXE or .COM)
  416.        files.  The  file  name  is  displayed without the extension. For
  417.        example,  the  ARC.EXE  program would be displayed simply as ARC.
  418.  
  419.           Note  that,  if  a  CONFIG.CFG  file is present in the current
  420.        directory,    current  disk  at  start  up  time,  then  TEMPLATE
  421.        automatically  invokes  AUTOLOAD.COM  (also  from  current disk /
  422.        directory)  to load the auto-configuration file and customize the
  423.        guest  applications  menu. Creating configuration files (both for
  424.        auto-configuration  and  in general) is described in section 1.4.
  425.  
  426.           You  may change diskettes by simply swapping the diskette out,
  427.        and  striking  Return  to  refresh the master menu screen.You may
  428.        also  use  the  DOS  commands  to  change  the  current hard disk
  429.        directory.  In  either  case,  be  sure  that  there is a copy of
  430.        COMMAND.COM  on the new diskette or directory (and of course that
  431.        the DOS system is on that disk).
  432.  
  433.        1.3.1.2 Configured Mode
  434.  
  435.           Configured  execution  is  much the preferrable way to run. In
  436.        the  first  place,  you  can control what the labels in the guest
  437.        applications  menu  will  look  like,  making  for  a  much  more
  438.        attractive  screen.  In  the  second  place,  you can (1) specify
  439.        programs  not  in the current directory or drive, and (2) you can
  440.        specify  command paramters to be used when executing the program.
  441.  
  442.           In  configured  mode,  you  may swap diskettes out at any time
  443.        without  affecting  the  menu  screen.  Just  be careful that the
  444.        programs  you  want  to  run  are  still available where TEMPLATE
  445.        thinks they should be.
  446.  
  447.        1.3.1.3 Selecting a Guest Application to Run
  448.  
  449.           Since  the  function  keys  are reserved for TEMPLATE control,
  450.        there  has  to  be another way to invoke user programs via single
  451.  
  452.                                        7
  453.  
  454.  
  455.  
  456.  
  457.                                                                   TEMPLATE (TM)
  458.  
  459.  
  460.  
  461.        keystroke.  This is done with the NUMBER (not function) keys, and
  462.        the letter keys A, B, and C.
  463.  
  464.           There  will  be  a  number  or letter just to the left of each
  465.        program  name  or menu label. If it is a number, just strike that
  466.        number  key  across  the  top of the keyboard. If it is a letter,
  467.        strike  that  CAPITALIZED  letter.  DO  NOT  strike  return.  The
  468.        program will be loaded and run.
  469.  
  470.           If  you strike a menu selection where there is no name or menu
  471.        label,  the  master  menu  screen  will be refreshed, and nothing
  472.        else  happens.  This  is  also  true  if  you  strike a key (like
  473.        Return)    that    is   not  used  on  the  master  menu  screen.
  474.  
  475.        1.3.2 The TEMPLATE Control Functions Menu
  476.  
  477.        1.3.2.1 F1 - Load a Configuration File
  478.  
  479.           Striking  the  F1 key while in the TEMPLATE master menu causes
  480.        the  satellite  program  LDTCFG.COM  to  be  loaded and executed.
  481.  
  482.           LDTCFG  clears  the  screen,  paints its logo, and prompts you
  483.        for  the  name  of the configuration file to be loaded. This name
  484.        may  contain  drive and path specifications, allowing you to load
  485.        a    configuration    file   from  anywhere.  The  example  auto-
  486.        configuration  file CONFIG.CFG has an extension of .CFG, but this
  487.        is  not  a  requirement.  It  is  recommended  that  you use this
  488.        extension  consistently,  however,  for  the sake of keeping your
  489.        file names straight.
  490.  
  491.           When  LDTCFG  has  loaded  the  configuration file, the screen
  492.        will  be  cleared  again  and the TEMPLATE master menu repainted.
  493.  
  494.           You  can  load  a  new  configuration  even  if one is already
  495.        loaded, replacing the old one.
  496.  
  497.        1.3.2.2 F2 - Load a MacroKey Definition File
  498.  
  499.           The  F2  key  cause  the  LDMKEY.COM  satellite  program to be
  500.        loaded  and  executed,  similarly  to  loading  a  configuration.
  501.  
  502.           LDMKEY  clears  the  screen,  paints its logo, and prompts you
  503.        for  the  name  of  the MacroKeys redefinition file to be loaded.
  504.        You  may  again  specify  both drive and path information in this
  505.        name.  There is no required name format for a MacroKeys file, but
  506.        it  is  recommended  that  you  assign names with an extension of
  507.        .KEY to avoid confusion.
  508.  
  509.           You  can  reload  and overlay old MacroKeys definitions at any
  510.        time.  Note  also  that  when  the TEMPLATE master menu screen is
  511.        showing,  MacroKeys are bypassed by the TEMPLATE code. This means
  512.        that    you    could  provide  a  definition  file  that  assigns
  513.        redefinition  strings to the Fx keys, and this will not interfere
  514.        with  the  operation of TEMPLATE. The definition tables are fully
  515.        active  when  any  other  program  is  being activated, including
  516.  
  517.                                        8
  518.  
  519.  
  520.  
  521.  
  522.                                                                   TEMPLATE (TM)
  523.  
  524.  
  525.  
  526.        during  the  execution  of  DOS  commands  (F5  discussed below).
  527.  
  528.        1.3.2.3 F3 - QUIT TEMPLATE
  529.  
  530.           We  have  already mentioned this key. F3 removes all interrupt
  531.        vectors  assigned  by  TEMPLATE  and  returns  to  the  operating
  532.        system.  This  necessarily  removes all support for the MacroKeys
  533.        and DosShell facilities.
  534.  
  535.           If  TEMPLATE  is  not  running,  and  you  execute  any of the
  536.        satellite  programs  (AUTOLOAD,  LDTCFG,  LDMKEY)  parts  of  the
  537.        operating  system  will  be  overlaid  -- the system will hang or
  538.        crash.  Also,  if  you have written your own program that invokes
  539.        the  DosShell interface, the system will hang. See the discussion
  540.        on  the  F8  key  below  to  discover  how  to terminate TEMPLATE
  541.        without losing these services.
  542.  
  543.        1.3.2.4 F4 - TOD Block Control
  544.  
  545.           The  F4  key  brings  up  the  TOD Block setup screen. The TOD
  546.        block  is  just  the  real time clock that TEMPLATE places in the
  547.        upper  right  hand  corner  of the screen when it starts. The TOD
  548.        block  can be turned on or off, and can be placed anywhere on the
  549.        screen.
  550.  
  551.           Use  the  arrow  keys to position the TOD block where you want
  552.        it.  If  you  move  the block off the screen in any direction, it
  553.        will  be  wrapped  to  the  other side of the screen in that same
  554.        direction.  You  should  position the TOD block where it will not
  555.        be  scrolled  by  an  applications program, since it will also be
  556.        refreshed  by  the TEMPLATE clock interrupt handler. The old copy
  557.        of  the  clock  is  undetectable by TEMPLATE, so you could end up
  558.        with  several  copies  of  the clock on the screen. The top right
  559.        corner  is  generally a good place. In that position, it will not
  560.        interfere   with  ACD's  TEXT/PC  word  processing  package,  for
  561.        example,  or  with  Lotus  1-2-3  (tm  Lotus Dev.). The TOD block
  562.        should  be  turned  off before running any graphics applications;
  563.        it will show up as garbage on the graphics screen.
  564.  
  565.        1.3.2.5 F5 - Execute Any DOS Command
  566.  
  567.           The  title  of  this  screen  is  simply  "Execute  Any MS-DOS
  568.        Command",  since  you  may  be  incorporating its use in your own
  569.        code  via  the DosShell interface. This function loads a new copy
  570.        of  COMMAND.COM  and  gives control to it, after you have entered
  571.        the  command  you want executed. (At the Command: prompt, type in
  572.        a  command just as you would at the system A>, B>, or C> prompt).
  573.  
  574.           Loading  a  new copy of COMMAND.COM works a little differently
  575.        in  the  various  versions  of  DOS. In DOS 3.x, you need only be
  576.        sure  that  there  is  a copy of COMMAND.COM in the current drive
  577.        and  directory. For DOS 2.x, however, there must be a copy on the
  578.        BOOT  drive,  ROOT  directory,  AS  WELL as on the current drive.
  579.        There  is a bug in this version of DOS that does not allow DOS to
  580.        properly  note the change in environment strings when a new drive
  581.  
  582.                                        9
  583.  
  584.  
  585.  
  586.  
  587.                                                                   TEMPLATE (TM)
  588.  
  589.  
  590.  
  591.        or directory is made current.
  592.  
  593.        1.3.2.6 F6 - Delete Configuration Tables
  594.  
  595.           This  key  deletes  all  configuration  data, putting TEMPLATE
  596.        back  into  unconfigured  mode. The directory of the current disk
  597.        will  be  read,  and  the  first  12  programs shown in the guest
  598.        applications menu.
  599.  
  600.        1.3.2.7 F7 - Delete MacroKey Tables
  601.  
  602.           Strike  F7  to  delete  MacroKeys definitions, turning off the
  603.        Macrokeys  facility.  MacroKeys  are  still  available,  but  are
  604.        simply  inactive.  They  can  be reloaded at any time with the F2
  605.        key from the TEMPLATE master menu.
  606.  
  607.        1.3.2.8 F8 - HIDE TEMPLATE (Stay Resident)
  608.  
  609.           This  is a method of terminating TEMPLATE and returning to the
  610.        operating  system,  but  leaving  TEMPLATE  code resident in RAM.
  611.        Therefore,  while  the  TEMPLATE master menu is no longer active,
  612.        both  the  MacroKeys  facility  and  the  DosShell interface are.
  613.  
  614.           When  TEMPLATE  is  hidden, any of the satellite utilities can
  615.        be  run  like ordinary batch programs. For example, typing LDMKEY
  616.        at  the  A>  prompt  will invoke the utility to load a new set of
  617.        MacroKeys  definitions.  AUTOLOAD  will also work in hidden mode.
  618.        So  will  LDTCFG, but loading a new configuration when the master
  619.        menu is invisible is rather meaningless.
  620.  
  621.           Once  TEMPLATE  has been hidden, it resides permanently in RAM
  622.        until the next time the system is booted.
  623.  
  624.        1.4 Using TEMPLATE Configuration Files
  625.  
  626.        1.4.1 AUTOLOAD.COM and CONFIG.CFG Files
  627.  
  628.           AUTOLOAD  is  the  satellite  module  that TEMPLATE invokes at
  629.        start  up  time to load an auto-configuration file, if one exits.
  630.        The  name  of the auto-configuration file is always assumed to be
  631.        CONFIG.CFG.
  632.  
  633.           AUTOLOAD  does  not  prompt for a file name. If the CONFIG.CFG
  634.        file  is not on the current disk, current directory, no action is
  635.        taken, and TEMPLATE is left in unconfigured mode.
  636.  
  637.           You  can  provide  your  own  CONFIG.CFG  file  (or any other,
  638.        also), as described below.
  639.  
  640.        1.4.2 LDTCFG.COM and Configuration Files
  641.  
  642.           LDTCFG  is  the  satellite  program  that is invoked, when you
  643.        strike  F1  on  the  master menu, to load any other configuration
  644.        files  than the CONFIG.CFG file. These other files do not have to
  645.        have any particular file name.
  646.  
  647.                                       10
  648.  
  649.  
  650.  
  651.  
  652.                                                                   TEMPLATE (TM)
  653.  
  654.  
  655.  
  656.  
  657.           Unlike  AUTOLOAD,  LDTCFG  does prompt you for the name of the
  658.        configuration file to be loaded, as noted above.
  659.  
  660.        1.4.3 Structure of .CFG Files
  661.  
  662.           .CFG  files  are  ASCII text files. They can be composed of up
  663.        to   12  lines  of  text,  each  followed  by  a  CR/LF  pair  of
  664.        characters;  that  is,  standard  text  files  according  to  DOS
  665.        definition  of  the  term. A .CFG file also ordinarily has an end
  666.        of  file  marker  (control-Z,  ASCII  26  decimal)  at  its  end.
  667.  
  668.           You  can create .CFG files with any STANDARD word processor or
  669.        line  editor;  that  is  one which you can prevent from embedding
  670.        special  control characters in the text, and does not turn on the
  671.        high  bit of any byte. You could use the DOS EDLIN utility, ACD's
  672.        TEXT/PC  word  processor,  or  the  editor  in  the  Turbo Pascal
  673.        package, for example.
  674.  
  675.        1.4.3 Syntax of Configuration Statements
  676.  
  677.           An  individual  line in a configuration file, or configuration
  678.        statement,  is just a string of characters that logically has two
  679.        parts:  the  menu  label and the corresponding executable program
  680.        name.  Optionally,  command  parameters needed by the program may
  681.        follow  the  first  two  parts.  The  order  of appearance in the
  682.        configuration  file  determines where a menu label will appear in
  683.        the  guest  applications  menu.  That  is, the first line will be
  684.        selection 1, and so forth.
  685.  
  686.           For  example,  imagine  a  program named MOVEFILE.COM. Here is
  687.        how  we  could  define  its appearance for the guest applications
  688.        menu:
  689.  
  690.        Move File 1 to File 2=c:movefile.com a:file1.doc b:file2.doc
  691.  
  692.           The  configuration  statement  begins with the substring "Move
  693.        File  1  to  File  2".  This  is the menu label, and is what will
  694.        appear  on  the  menu  screen.  The  menu  label  may be up to 30
  695.        characters   long,  and  must  be  at  least  1  character  long.
  696.  
  697.           The  equals  sign  =  now tells LDTCFG that the actual program
  698.        specification  follows.  Notice  that there is NO blank preceding
  699.        and NO blank following the =.
  700.  
  701.           Next  we  have  the executable program specification. It is to
  702.        be  loaded  from  the C: drive, whether this is the current drive
  703.        or  not.  In  this  case,  it  will  be  loaded  from the current
  704.        directory    on  C:,  but  we  could  have  also  specified  path
  705.        information.  NOTICE  that  the  EXTENSION IS PRESENT. During the
  706.        loading  of the program module it is treated like any other file;
  707.        therefore  leaving  off  the  extension  would  cause  a mismatch
  708.        during the directory search for the program.
  709.  
  710.           Finally,  the  command parameters (command tail) appears, with
  711.  
  712.                                        11
  713.  
  714.  
  715.  
  716.  
  717.                                                                    TEMPLATE (TM)
  718.  
  719.  
  720.  
  721.        blanks  embedded  right  where  they would be if you were running
  722.        the  program  from  the system prompt. Code these parameters just
  723.        like  you  would  any  other  time.  The following example is the
  724.        CONFIG.CFG  file  supplied with TEMPLATE. Its purpose is to auto-
  725.        configure  the  TEXT/PC  package  from  Atkinson,  Campbell Dev.:
  726.  
  727.        TEXT/PC Word Processor=a:wp.com
  728.        TYPESET/PC Document Printer=a:typeset.com
  729.        FONT/PC Graphics Font Editor=a:gcg.com
  730.        COMM/PC Asynchronous Comm.=a:comm.com
  731.        CP/PC Compress a File=a:cp.com
  732.        DC/PC Decompress a File=a:dc.com
  733.        Monochrome Font Editor=a:ged.com
  734.        Font Report / Print=a:grep.com
  735.  
  736.           This  configuration  file  will provide labels for the first 8
  737.        guest application menu selections.
  738.  
  739.        1.5 Using the MacroKeys Facility
  740.  
  741.        1.5.1 LDMKEY.COM Utility
  742.  
  743.           LDMKEY  is the satellite program invoked when you strike F2 on
  744.        the  TEMPLATE  master  menu screen. It will first ask you for the
  745.        name  of  the  .KEY  file to be loaded, and then use that file to
  746.        redefine the current MacroKeys definitions.
  747.  
  748.           LDMKEY  can  also  be run from the DOS commands screen (see F5
  749.        key   discussion  above).  This  is  mentioned  since  a  program
  750.        utilizing   the  DosShell  interface  may  also  wish  to  reload
  751.        MacroKeys  during  its execution. That is the only way to do this
  752.        from a program that you have written.
  753.  
  754.           Lastly,  LDMKEY  can  be  run  from  the  system  prompt  when
  755.        TEMPLATE  has  been  placed  into hidden mode. In all cases where
  756.        you  invoke  it directly, just type in the name LDMKEY and strike
  757.        Return, providing no command tail.
  758.  
  759.        1.5.2 Structure of .KEY Files
  760.  
  761.           .KEY  files  do  not have to have this extension; it is merely
  762.        recommended  as  a standard name for them. .KEY files are similar
  763.        to  configuration  files  in  that  they  are standard ASCII text
  764.        files.  They  are  different in that they may have many more than
  765.        12  statements,  as  long  as  the  total size of the translation
  766.        table  does  not  exceed  4096  bytes. They are also different in
  767.        that  the  order  of specification makes no difference, since the
  768.        key  being  redefined is identified in the statement. However, it
  769.        is  a  good  idea to define frequently used keys near the top, to
  770.        reduce search time for the substitution string.
  771.  
  772.           MacroKey  redefinition  statements  also consist of two parts:
  773.        the  identity  of  the  key  being  redefined,  and the string of
  774.        characters  that  is  to  be used as keyboard input in its place.
  775.  
  776.  
  777.                                        12
  778.  
  779.  
  780.  
  781.  
  782.                                                                    TEMPLATE (TM)
  783.  
  784.  
  785.  
  786.           In  order  to  support  both the redefinition and input of the
  787.        special  keys  on  the  keyboard,  we  will  make  provision  for
  788.        specifying  Extended  ASCII codes. Extended ASCII codes are codes
  789.        beyond  the  256  different  values  that  can  be specified in a
  790.        single  byte.  Consequently,  an Extended ASCII code requires two
  791.        byte  to  completely  specify  it. These two bytes are called the
  792.        character code and the scan code.
  793.  
  794.           Confused?  Here is what we mean. When a program, including the
  795.        DOS  routines  themselves,  request  keyboard  input from the ROM
  796.        BIOS  I/O  handlers, the BIOS routine always returns two bytes --
  797.        the character and scan codes.
  798.  
  799.           For  ordinary  keys,  the character and scan codes are exactly
  800.        the  same,  so  that  256  different  values  are  possible.  For
  801.        example,  the  character  "A"  is  represented  by two bytes each
  802.        containing  an  ASCII 65 (decimal); the Escape key is represented
  803.        by two bytes each containing 27 (decimal).
  804.  
  805.           However,  if  you strike the F1 key, the two bytes returned to
  806.        the  program  are  different.  This time the character code is an
  807.        ASCII  0,  signalling  that  the  scan  code contains an Extended
  808.        ASCII  code.  For the F1 key, the scan code is 59 (decimal). Here
  809.        is  a complete table of the special keys that require an Extended
  810.        ASCII  code to identify them, citing only the scan code (assuming
  811.        a 0 character code):
  812.  
  813.        Extended ASCII              Keystroke Description
  814.        (Second) Code
  815.        ------------------------------------------------------
  816.        3                           NUL (CTL-@, = Shift-Ctl-2)
  817.        15                          Shift (back) Tab
  818.        16-25                       Alt - Q,W,E,R,T,Y,U,I,O,P
  819.        30-38                       Alt - A,S,D,F,G,H,J,K,L
  820.        44-50                       Alt - Z,X,C,V,B,N,M
  821.        59-68                       F1 thru F10
  822.        71                          Home
  823.        72                          Cursor Up (Arrow)
  824.        73                          Page Up
  825.        75                          Cursor Left (Arrow)
  826.        77                          Cursor Right (Arrow)
  827.        79                          End
  828.        80                          Cursor Down (Arrow)
  829.        81                          Page Down
  830.        82                          Ins (Insert)
  831.        83                          Del (Delete)
  832.        84-93                       Shift - F1 thru F10
  833.        94-103                      CTL - F1 thru F10
  834.        104-113                     Alt - F1 thru F10
  835.        114                         CTL - PrtSc
  836.        115                         CTL - Cursor Left
  837.        116                         CTL - Cursor Right
  838.        117                         CTL - End
  839.        118                         CTL - Page Down
  840.        119                         CTL - Home
  841.  
  842.                                        13
  843.  
  844.  
  845.  
  846.  
  847.                                                                    TEMPLATE (TM)
  848.  
  849.  
  850.  
  851.        120-131                     Alt - 1,2,3,4,5,6,7,8,9,0,-,=
  852.        132                         CTL - Page Up
  853.        ----------------------------------------------------------
  854.  
  855.        1.5.3 Syntax of MacroKey Redefinition Statements
  856.  
  857.           Now  we  have  the  terminology  to  discuss  the  syntax of a
  858.        MacroKeys definition statement.
  859.  
  860.           In  general,  a  MacroKeys  redefinition statement may contain
  861.        255  characters of data, maximum; a statement may not be null; it
  862.        must  be terminated by a true carriage return / line feed pair of
  863.        characters.  The  component  elements of the string of characters
  864.        utilize    the  Turbo  Pascal  syntactical  standard  for  string
  865.        constant  specification. This means that the characters #, ^, and
  866.        '    (single   quote)  have  special  significance,  as  follows:
  867.  
  868.           The  #  character  begins  a  1  to  3  digit  decimal  number
  869.        specification  that  will  be  parsed  (decoded) into a byte type
  870.        numeric  field. That is, #255 will parse internally into a 1 byte
  871.        item that has an ASCII value of 255 decimal.
  872.  
  873.           The  ^  character  means that a control character follows. For
  874.        example,  ^M  means  that  the parser is to generate a byte field
  875.        whose  ASCII  value  is the same as the control-M key (77-64=13).
  876.        This  example  was chosen for a special reason: since you have to
  877.        end  the  text  line  with  a  real  CR/LF, this is how you would
  878.        specify  the  Return  key action in a redefinition statement. You
  879.        should  also  be  very  careful  to  note  that it is usually the
  880.        software  that automatically supplies the LF character; you would
  881.        almost never have to code a ^J in a statement.
  882.  
  883.           The  '  single  quote  character delimits normal text strings,
  884.        like  this;  'This  is  a  normal text string'. There is a single
  885.        quote  on  each  end of the string. If you need a single quote as
  886.        data  inside  the  string, just double it up (not a double quote,
  887.        just  two  singles):  'This  isn''t  very  hard.'  There are some
  888.        instances  where the single quotes can be left out, but that is a
  889.        nonstandard  use,  and  may  change with new versions of TEMPLATE
  890.        Therefore,  you should always use the single quotes when they are
  891.        called for.
  892.  
  893.           To  create  the  whole  MacroKeys redefinition statement, just
  894.        string  together  elements  of  these  three  kinds;  do  not use
  895.        embedded  blanks  unless you want them to actually be part of the
  896.        specification,  and  do  not  separate  elements  with  commas or
  897.        anything else -- run it all together.
  898.  
  899.           For  example,  let's  say  that  we  want  the  F1  key  to be
  900.        translated  to  "Hello,  there." and supply that string for input
  901.        to  the  program  requesting keyboard input. Here is how we would
  902.        code this:
  903.  
  904.        #0#59'Hello, there.'
  905.  
  906.  
  907.                                        14
  908.  
  909.  
  910.  
  911.  
  912.                                                                    TEMPLATE (TM)
  913.  
  914.  
  915.  
  916.        Here  we  have  a  character code of 0 followed by a scan code of
  917.        59;  this  identifies  the F1 key as the one being redefined. THE
  918.        KEY  BEING  REDEFINED IS ALWAYS SPECIFIED WITH BOTH THE CHARACTER
  919.        AND  SCAN  CODES,  IN  THAT  ORDER.  Next  we have a substring of
  920.        normal  characters  enclosed  in  single  quotes.  Since they are
  921.        normal  characters,  they  do NOT have to have both character and
  922.        scan codes.
  923.  
  924.           For  a  more  complex  example,  assume that you are running a
  925.        database  program  in  which  you  strike the Esc key to pop up a
  926.        commands  menu.  On  this  menu,  F1 selects a search by keyword,
  927.        which  in  turn  will  then prompt you to supply that keyword for
  928.        the  search  operation,  followed  by striking the Return key. We
  929.        want  to search for records containing the chatacters "keyboard".
  930.        Finally,  assume that we want the Esc key to do all that work for
  931.        us. Here is the MacroKeys statement for it:
  932.  
  933.        #27#27^[#0#59'keyboard'^M
  934.  
  935.           The  specification  #27#27  identifies  the Esc key as the one
  936.        being  redefined.  Since  it  is a normal, not an Extended ASCII,
  937.        character   we  just  specify  the  same  code  twice.  Both  the
  938.        character  and  scan  codes  are  the same for normal characters.
  939.  
  940.           Next  we see ^[ encoded. This is just the Esc key again! Learn
  941.        two  things  from  this: (1) There is more than one way to encode
  942.        some  keys.  Consult  your  ASCII charts to see what can be done.
  943.        (2)  MacroKeys  references  are NON-RECURSIVE. You can redefine a
  944.        key,  and  then use it within the redefinition statement. In this
  945.        case,  the  Esc  character  will  actually  be  passed  on to our
  946.        hypothetical database program.
  947.  
  948.           The  F1  key  is  encoded with #0#59. Here is a very important
  949.        rule:  ANY  KEY  WHICH  HAS A CHARACTER CODE OF 0 -- A SPECIAL OR
  950.        FUNCTION  KEY  AS  FOUND  IN THE TABLE ABOVE -- MUST BE SPECIFIED
  951.        WITH  BOTH  THE  CHARACTER AND SCAN CODES, IN THAT ORDER. THIS IS
  952.        TRUE    WHEREVER   IT  APPEARS  IN  THE  REDEFINITION  STATEMENT.
  953.  
  954.           To  specify the keyword for search, we code 'keyboard'^M. This
  955.        causes  both  the  keyword  and a carriage return to be passed to
  956.        the  program.  The  real  CR  that  we  struck  while editing the
  957.        MacroKeys file is not part of the redefinition.
  958.  
  959.        1.5.4 Advanced Use of MacroKey Definitions
  960.  
  961.           A  word of caution is in order. Because MacroKeys redefinition
  962.        statements  are  non-recursive,  you  can  redefine  keys  that a
  963.        program  assumes  are  present,  IF  you  assign other keys their
  964.        original function.
  965.  
  966.           For  example,  TEXT/PC  assumes that F1 - F10 are reserved for
  967.        use  by  the word processor itself.  You could define F1 - F10 as
  968.        MacroKeys,  if  you  assigned, say, Alt-1 through Alt-10 to input
  969.        F1  - F10. But this is confusing and is best avoided. The TEXT/PC
  970.        package  has  with  it  MacroKeys definitions that are invoked by
  971.  
  972.                                        15
  973.  
  974.  
  975.  
  976.  
  977.                                                                    TEMPLATE (TM)
  978.  
  979.  
  980.  
  981.        the shifted function keys, S-F1 through S-F10.
  982.  
  983.        1.6 Programming the DosShell Interface
  984.  
  985.        1.6.1 Theory Behind the DosShell Interface
  986.           The  DosShell  interface  is a method with which a program you
  987.        write  can access the same code that TEMPLATE uses to execute DOS
  988.        commands    from   within  the  application  program.  With  this
  989.        interface,  you  can  provide  a service to the user usually only
  990.        found in very expensive packages.
  991.  
  992.           The  interface  is  accessed  by  executing  interrupt 63 Hex.
  993.        TEMPLATE  sets  up  the  interrupt  vector; all you have to do is
  994.        execute  the  8088  interrupt  (INT) instruction. You can do this
  995.        from  BASIC,  Turbo  Pascal,  assembler routines, or any language
  996.        which  can execute this machine instruction directly (by whatever
  997.        method).
  998.  
  999.        1.6.2 Programming Requirements
  1000.  
  1001.        1.6.2.1 Screen Disposition During Execution
  1002.  
  1003.           When  you invoke the DosShell, you get the same screen as when
  1004.        you  strike F5 from the TEMPLATE master menu. Anything you had on
  1005.        the  screen  already  is  destroyed,  so  it  is  your  program's
  1006.        responsibility to preserve it if necessary.
  1007.  
  1008.           Once  the DosShell has executed the user's command, control is
  1009.        given  back to your program, but the screen is not cleaned up for
  1010.        you.  If  you  had preserved the original screen, you can restore
  1011.        it; if not, you must repaint it.
  1012.  
  1013.        1.6.2.2 Invoking Interrupt 63H(ex)
  1014.  
  1015.           It  requires  only  two  bytes  of  machine code to invoke the
  1016.        DosShell  via  interrupt  63H.  The interrupt instruction is CDH,
  1017.        and  the  interrupt  id  is  63H.  Your program need NOT make any
  1018.        provisions  for  preserving the PC's registers. The DosShell will
  1019.        save  and  restore  every  register in the system on your behalf.
  1020.  
  1021.        1.6.2.3 RAM Requirements, System and User
  1022.  
  1023.           When  you  invoke  the  DosShell  from a program, the TEMPLATE
  1024.        code  is  naturally already present. But the interface begins its
  1025.        operation  by  loading  a  secondary copy of COMMAND.COM from the
  1026.        current  disk and directory (see notes above about exceptions for
  1027.        DOS  2.x).  For  DOS 2.10, this requires about 17K extra RAM; for
  1028.        3.10 it requires about 24K.
  1029.  
  1030.           Once  COMMAND.COM  is  loaded,  it  in turn may need to load a
  1031.        utility  program.  The  amount  of  RAM  required varies with the
  1032.        utility,  but  many  will  run  on  a  256K  system.  If you have
  1033.        sufficient  RAM  you  may  even  run  a  DOS  batch file from the
  1034.        DosShell.
  1035.  
  1036.  
  1037.                                        16
  1038.  
  1039.  
  1040.  
  1041.  
  1042.                                                                    TEMPLATE (TM)
  1043.  
  1044.  
  1045.  
  1046.        1.6.3 Invoking From Assembler Routines
  1047.  
  1048.           It  requires only one line of code to invoke the DosShell from
  1049.        an assembler routine:
  1050.  
  1051.           INT    63H   ; GOTO DOSSHELL
  1052.  
  1053.        You  need  not  push  or pop registers; the interface does it for
  1054.        you.  There  are  no  special considerations or odd conditions to
  1055.        handle  in  assembler  routines. You should, however, use the DOS
  1056.        SHRINK  call  to  free  up  enough  RAM  to  hold COMMAND.COM and
  1057.        whatever routines it will invoke.
  1058.  
  1059.        1.6.4 Invoking From Turbo Pascal
  1060.  
  1061.           The  Intr  procedure  in  Turbo  Pascal IS NOT APPROPRIATE for
  1062.        invoking  the  DosShell.  That  procedure does too many things to
  1063.        the  system registers, and will likely hang the system if you try
  1064.        it.
  1065.  
  1066.           Instead, use inline code to do it:
  1067.  
  1068.        inline($CD/$63);
  1069.  
  1070.        is  all  you  need. Again, you need not save registers. You must,
  1071.        however,  set compile options so that the .COM file does not take
  1072.        over  all  of  RAM;  there  would be no place to load COMMAND.COM
  1073.        then.   See  the  Turbo  Pascal  reference  manual  for  details.
  1074.  
  1075.        1.6.5 Invoking From BASIC/BASICA
  1076.  
  1077.           The  following  example is only one method of poking a machine
  1078.        language  routine  into memory and invoking the DosShell. Consult
  1079.        the  BASIC  manual  for other methods; the routine stays the same
  1080.        whatever the method.
  1081.  
  1082.        10 CLEAR ,&HFFF8
  1083.        20 POKE &HFFF8,&HCD: POKE &HFFF9,&H63: POKE &HFFFA,&HCB
  1084.        30 DOS=&HFFF8
  1085.        40 CALL DOS: CLS
  1086.  
  1087.           Line  10  clears  BASIC's  user area of garbage and reserves 8
  1088.        bytes  of  spaces at its high end. This is where we will poke our
  1089.        short machine language routine.
  1090.  
  1091.           Line  20  actually pokes the routine. The first values you are
  1092.        already  familiar  with;  a  hex  CB  is  an 8088 long return, no
  1093.        parameters.  This  is necessary to go back to the point after the
  1094.        call statement properly.
  1095.  
  1096.           Line  30  merely  equates  offset  &HFFF8  with the label DOS.
  1097.        Notice  that  we  have not used the DEF SEG statement, so that we
  1098.        are still working within the user area of BASIC.
  1099.  
  1100.           Line    40,  finally,  actually  calls  the  machine  language
  1101.  
  1102.                                        17
  1103.  
  1104.  
  1105.  
  1106.  
  1107.                                                                    TEMPLATE (TM)
  1108.  
  1109.  
  1110.  
  1111.        routine,  which  in turn invokes the DosShell within TEMPLATE. On
  1112.        return  from  the DosShell, a BASIC clear screen is executed. You
  1113.        can replace the CLS with whatever you want.
  1114.  
  1115.        1.6.6 Stacking Applications in RAM with the DosShell
  1116.  
  1117.           Consider  the situation in which your program was invoked from
  1118.        the  GUEST  APPLICATION  MENU. While your program is running, you
  1119.        decide  that  you  want  to run a Lotus 1-2-3 spreadsheet, so you
  1120.        invoke   the  DosShell  with  your  program's  facility.  At  the
  1121.        Command:  prompt  you type in 123 and strike return. And away you
  1122.        go.  When  you terminate the spreadsheet, then you are right back
  1123.        in your program, nothing lost or damaged.
  1124.  
  1125.           This  is called "applications stacking." It allows you to have
  1126.        more  than  one  application program active in RAM at a time, but
  1127.        (1)   since  they  weren't  both  started  by  the  DosShell,  no
  1128.        nonreentrant  code violations occurred, and (2) since they aren't
  1129.        running  concurrently,  there  is  no confusion over multitasking
  1130.        conditions.
  1131.  
  1132.           If  you  start a program with TEMPLATE's DOS command facility,
  1133.        however,  and  then  attempt  to  invoke  the  DosShell from that
  1134.        program,  you  will  have reentered nonreentrant code. The result
  1135.        will  be  that  the  system  will  hang  when  you  return to the
  1136.        TEMPLATE master menu.
  1137.  
  1138.  
  1139.           That's  TEMPLATE.  Please let us know how you like it. We plan
  1140.        to  listen  to  the  users  before  designing  the  next release.
  1141.         
  1142.  
  1143.  
  1144.  
  1145.  
  1146.  
  1147.  
  1148.  
  1149.  
  1150.  
  1151.  
  1152.  
  1153.  
  1154.  
  1155.  
  1156.  
  1157.  
  1158.  
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164.  
  1165.  
  1166.  
  1167.                                        18
  1168.  
  1169.  
  1170.  
  1171.